Gradient material control and programming of additive manufacturing processes

ABSTRACT

Aspects of the present disclosure relate to. In one example, a method of controlling an additive manufacturing machine includes: determining a material transition between a first machine control code and a second machine control code in a set of machine control codes; determining a material transition time for the determined material transition between the first machine control code and the second machine control code; determining a motion time from the first machine control code and the second machine control code; comparing the material transition time to the motion time; and manipulating the set of machine control codes based on the comparison.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/058,854, filed on Aug. 8, 2018, and now issued as U.S. Pat. No.10,562,099, which claims the benefit of U.S. Provisional PatentApplication No. 62/543,591, filed on Aug. 10, 2017, the disclosures ofeach of which are incorporated herein by reference in their entirety.

INTRODUCTION

The present disclosure relates to additive manufacturing systems andmethods. In particular, aspects of the present disclosure relate tosystems and methods for creating multi-material and gradient-materialstructures and coatings using an additive manufacturing system, such asa laser metal deposition system.

Examples of commercially available additive manufacturing methodsinclude extrusion-based methods (e.g., Fused Deposition Modeling (FDM)),fusing or binding from a powder bed based methods (e.g., Selective LaserSintering (SLS), Selective laser melting (SLM), and Electron beammelting (EBM)), lamination methods, photopolymerization methods (e.g.,stereo lithography), powder- or wire-fed directed energy depositionmethods (e.g., direct metal deposition (DMD), laser additivemanufacturing (LAM), laser metal deposition (LIVID)), and others.

Laser metal deposition (LIVID) is a laser-based additive manufacturingprocess in which metal structures are built up on a substrate or metallayers and structures are applied to existing components (e.g.,cladding) in layers. In LMD, a laser generates a molten bath on anexisting surface into which metal powder is directed through a nozzle ina deposition head (e.g., using a carrier gas). The powder melts andbonds with the base material in the molten pool thereby forming newlayers and ultimately structures additively.

Additive manufacturing methods, such as LIVID, provide uniquecapabilities to create multi-material and gradient-material structuresand coatings. Gradient materials are a special type of multi-materialstructure wherein the material composition is a blend of two or moredifferent materials. For example, a structure may be manufactured tohave a first layer comprising 100% steel and 0% copper, a second layercomprising 50% steel and 50% copper, and a third layer comprising 0%steel and 100% copper. Gradient materials may provide various advantagesversus a discreet changeover in materials, such as: reduced stress atthe multi-material fusion line, which helps to avoid delamination andcracking. However, existing methods for programming and controlling anadditive manufacturing system to create multi-material andgradient-material structures are ineffective, especially if the materialgradient varies nonlinearly throughout the structure. Using LIVID as anexample, if a substantial transport distance exists between a material(e.g., powder) feeder and a deposition head of an LIVID system, aprogrammed change in the actual material output of the feeder will lagthe change in the material being deposited by the deposition head. Insome cases, the delay may be as much as 0.5 to 20 seconds, dependingupon the distance between the material feeder and deposition head, thetype of material, the pressure and speed of the carrier gas, etc. Thedelay may result in deposition of the wrong materials, or the wrongproportion of materials, as compared to the modeled object beingadditively manufactured. Such issues may result in structural as well asaesthetic and functional deficiencies.

Accordingly, what is needed is an improved programming and controlmethodology for creating gradient-material structures using additivemanufacturing methods, such as LMD methods.

BRIEF SUMMARY

Certain embodiments provide a method of controlling an additivemanufacturing machine, including: determining a material transitionbetween a first machine control code and a second machine control codein a set of machine control codes; determining a material transitiontime for the determined material transition between the first machinecontrol code and the second machine control code; determining a motiontime from the first machine control code and the second machine controlcode; comparing the material transition time to the motion time; andmanipulating the set of machine control codes based on the comparison.

Other embodiments may provide an apparatus configured to perform amethod of controlling an additive manufacturing machine, or acomputer-readable medium comprising instructions that when executed by aprocessor of an apparatus, cause the apparatus to perform a method ofcontrolling an additive manufacturing machine.

The following description and the related drawings set forth in detailcertain illustrative features of one or more embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

The appended figures depict certain aspects of the one or moreembodiments and are therefore not to be considered limiting of the scopeof this disclosure.

FIG. 1 depicts an example of an additive manufacturing system.

FIGS. 2A-2C depict examples of Location and Material Process State(LAMPS) codes.

FIG. 3 depicts a method for manipulating machine control code to accountfor material transportation delays.

FIG. 4 depicts an example of a part that includes multiple material andgradient material structures.

FIG. 5 depicts a method for addressing material transport delay usingclosed-loop process control of an additive manufacturing process.

To facilitate understanding, identical reference numerals have beenused, where possible, to designate identical elements that are common tothe drawings. It is contemplated that elements and features of oneembodiment may be beneficially incorporated in other embodiments withoutfurther recitation.

DETAILED DESCRIPTION

Aspects of the present disclosure provide methods and apparatuses forcreating multi-material and gradient-material structures and coatingsusing additive manufacturing methods, such as a laser metal depositionmethod.

Additive manufacturing systems, such as 3D printers, may be used tobuild three-dimensional parts from digital representations (e.g.,models) of the parts. Initially, a 3D design model or representation maybe created using appropriate modeling and design software. The filesmaking up a 3D CAD model may include material property information orattributes. For example, files such as OBJ files or assemblies of STLfiles may include material property information. In some cases, eachindividual STL file may have its own material type. An analogoussituation is the inclusion of color data within a CAD file, such as theinformation represented in an OBJ file type for multi-color 3D printing.Then, the 3D model may be converted into a series of layers usingsoftware, such as “slicing” software. Thereafter, each layer may beprocessed to create machine control codes for directing one or moreelements of an additive manufacturing system along a specific path tocreate a particular layer. The machine control codes may be in the formof, for example, G-code tailored to a specific type of additivemanufacturing machine.

In order to alleviate certain deficiencies in existing additivemanufacturing methods, enhancements to existing machine control codesand methods for adapting such machine control codes either before orduring processing are described herein. Further a method forimplementing closed loop control of an additive manufacturing machineotherwise controlled by machine control codes is described herein.

Example Additive Manufacturing System

FIG. 1 depicts an example of an additive manufacturing system 100.Additive manufacturing system 100 includes a user interface 102. Userinterface 102 may be, for example, a graphical user interface comprisinghardware and software controls for controlling additive manufacturingsystem 100. In some examples, user interface 102 may be integral withadditive manufacturing system 100 while in other examples user interface102 may be remote from additive manufacturing system 100 (e.g., on aremote computer such as a laptop computer or a personal electronicdevice).

Additive manufacturing system 100 also includes a control system 104. Inthis example, control system 104 is in data communication with userinterface 102 as well as directed energy source 106, material feed 108,gas feed 110, distance sensor 114, process motion system 112, tooling116, and build surface motion system 124. In other examples, controlsystem 104 may be in data communication with further elements ofadditive manufacturing system 100.

Control system 104 may include hardware and software for controllingvarious aspects of additive manufacturing system 100. For example,control system 104 may include one or more: processors, memories, datastorages, physical interfaces, software interfaces, software programs,firmwares, and other aspects in order to coordinate and control thevarious aspects of additive manufacturing system 100. In some examples,control system 104 may include network connectivity to various aspectsof additive manufacturing system 100 as well as to external networks,such as the Internet and other networks, such as local area networks(LANs) and wide area networks (WANs). In some examples, control system104 may be a purpose-built logic board, while in other examples controlsystem 104 may be implemented by a general purpose computer withspecific software components for controlling the various aspects ofadditive manufacturing system 100. The data connections shown betweencontrol system 104 and other aspects of additive manufacturing system100 are exemplary only, and other implementations are possible.

Control system 104 may interpret commands received from user interface102 and thereafter cause appropriate control signals to be transmittedto other aspects of additive manufacturing system 100. For example, auser may input data representing a part to be processed using additivemanufacturing system 100 into user interface 102 and control system 104may act upon that input to cause additive manufacturing system 100 toprocess the part.

In some examples, control system 104 may compile and execute machinecontrol codes, such as G-code data, that causes aspects of additivemanufacturing machine 100 to operate. For example, the machine controlcodes may cause process motion system 112 or build surface motion system124 to move to specific positions and at specific speeds. As anotherexample, the machine control codes may cause directed energy source 106,material feed 108, gas feed 110, or tooling 116 to activate ordeactivate. Further, the machine control codes may modulate theoperation of the aforementioned aspects of additive manufacturingmachine 100, such as by increasing or decreasing the power of directedenergy source 106, increasing or decreasing the flow rate of materialfeed 108 or gas feed 110, increasing or decreasing the speed of tooling116, etc.

Process motion system 112 may move elements of additive manufacturingsystem 100 to exact positions. For example, process motion system 112may position deposition element 120 at an exact distance from a partlayer 122 being manufactured. Similarly, process motion system 112 mayposition tooling 116 precisely to perform fine tooling operations on apart layer 122. Further, process motion system 112 may position distancesensor 114 precisely and provide a known reference location for distancemeasurements to one or more points on a part layer 122. Process motionsystem 112 may also report current positioning of elements of additivemanufacturing system 100 to control system 104 for use in providingfeedback during the additive manufacturing process.

Directed energy source 106 may provide any suitable form of directedenergy, such as a laser beam (e.g., from a fiber laser) or an electronbeam generator, which is capable of melting a manufacturing material,such as a metal powder. Directed energy source 106 may interact withdirected energy guides 118 in order to, for example, direct or focus aparticular type of directed energy. For example, directed energy guides118 may comprise one or more optical elements, such as mirrors, lenses,filters, and the like, configured to focus a laser beam at a specificfocal point and to control the size of the focused laser point. In thisway, the actual creation of the laser energy by directed energy source106 may be located remote from the manipulation and focus of the laserenergy by directed energy guides 118.

Directed energy source 106 may also be used to remove material from amanufactured part, such as by ablation.

Material feed 108 may supply building material, such as a powder, todeposition element 120. In some examples, material feed 108 may be aremote reservoir including one or more types of raw material (e.g.,different types of metal) to be used by additive manufacturing system100.

Deposition element 120 may be connected with material feed 108 and maydirect material, such as powder, towards a focal point of directedenergy source 106. In this way, deposition element 120 may control theamount of material that is additively manufactured at a particular pointin time. Deposition element may include nozzles, apertures, and otherfeatures for directing material, such as metal powder, towards amanufacturing surface, such as a build surface or previously depositedmaterial layer. In some examples, deposition element 120 may havecontrollable characteristics, such as controllable nozzle aperturesizes. In some examples, deposition element 120 may be a nozzle assemblyor deposition head of a laser metal deposition machine.

Gas feed 110 may be connected with deposition element 120 to providepropulsive force to the material provided by material feed 108. In someexamples, gas feed 110 may modulate the gas flow rate to controlmaterial (e.g., powder) flow through deposition element 120 and/or toprovide cooling effect during the manufacturing process.

Distance sensor 114 may be any sort of sensor capable of measuringdistance to an object. In some examples, distance sensor 114 may be anoptical distance sensor, such as a laser distance sensor. In otherexamples, distance sensor 114 may be an acoustic distance sensor, suchas an ultrasonic sensor. In yet other examples, distance sensor 114 maybe an electromagnetic distance sensor or a contact-based distancesensor.

Tooling 116 may be any form of machine tool, such as a tool for cutting,grinding, milling, lathing, etc. In the example depicted in FIG. 1 ,Tooling 116 may be moved into place by process motion system 112. Inother examples, tooling 116 may be separate from, for example,deposition element 120 and distance sensor 114 but likewise controllableby control system 104.

Notably, while directed energy source 106, material feed 108, gas feed110, directed energy guides 118, distance sensor 114, tooling 116, anddeposition element 120 are shown in an example configuration in FIG. 1 ,other configurations are possible.

Process motion system 112 may control the positioning of one or moreaspects of additive manufacturing system 100, such as distance sensor114, deposition element 120, and tooling 116. In some examples, processmotion system 112 may be movable in one or more degrees of freedom. Forexample, process motion system 112 may move and rotate depositionelement 120, distance sensor 114, and tooling 116 in and about the X, Y,and Z axes during the manufacturing of part layers 122.

Build surface motion system 124 may control the positioning of, forexample, a build surface upon which part layers 122 are manufactured. Insome examples, build surface motion system 124 may be movable in one ormore degrees of freedom. For example, build surface motion system 124may move and rotate the build surface in and about the X, Y, and Z axesduring the manufacturing of part layers 122. In some examples, the buildsurface may be referred to as a build plate or build substrate.

Computer-Aided Design (CAD) software 126 may be used to design a digitalrepresentation of a part to be manufactured, such as a 3D model. CADsoftware 126 may be used to create 3D design models in standard dataformats, such as DXF, STP, IGS, STL, and others. While shown separatefrom additive manufacturing system 100 in FIG. 1 , in some examples CADsoftware 126 may be integrated with additive manufacturing system 100.

Slicing software 130 may be used to “slice” a 3D design model into aplurality of slices or design layers. Such slices or design layers maybe used for the layer-by-layer additive manufacturing of parts using,for example, additive manufacturing system 100.

Computer-Aided Manufacturing (CAM) software 128 may be used to createmachine control codes, for example, G-Code or LAMPS codes as describedfurther below, tp control additive manufacturing machine 100. Forexample, CAM software may create code in order to direct a manufacturingsystem, such as additive manufacturing system 100, to deposit a materiallayer along a 2D plane, such as a build surface, in order to build apart. For example, as shown in FIG. 1 , part layers 122 are manufacturedon (e.g., deposited on, formed on, etc.) build surface motion system 124using process motion system 112 and deposition element 120.

In some examples, one or more of CAD software 126, CAM software 128, andSlicing Software 130 may be combined into a single piece or suite ofsoftware. For example, CAD or CAM software may have an integratedslicing function.

Example Coding Methodology for Control of Laser Metal Deposition (LMD)Machine

As described above, an additive manufacturing system, such as system 100of FIG. 1 , is generally configured to be controlled by machine controlcodes, which directs the system to deposit material in a desiredlocation in order to build the desired structure.

Traditional machine control codes, such as G-codes, for controlling anadditive manufacturing system, such as a Laser Metal Deposition (LMD)machine, may be in a format such as: “LINEAR X10 Y0 Z0 F50”. In thisexample, the variables used in the machine control code have thefollowing meanings: (1) LINEAR: type of motion command, with otherpossible commands, such as ARC or CIRCLE; (2) X: location in theCartesian X-axis of the LMD machine in units, such as millimeters; (3)Y: location in the Cartesian Y-axis of the LIVID machine in units, suchas millimeters; (4) Z: location in the Cartesian Z-axis of the LaserMetal Deposition machine in units, such as millimeters; and (5) F:motion scan rate of the LIVID machine in units, such as millimeters persecond. Thus, traditional machine control codes focus only on motion ofaspects of the additive manufacturing machine. Notably, theaforementioned units (e.g., millimeters) are just one example, and otherexamples of absolute and relative distance measures are possible.Similarly, the coordinate system need not be a Cartesian coordinatesystem, and other coordinate systems now known, such as cylindrical,spherical, polar, curvilinear, and later developed may be used. Further,due to the various implementations of G-code, generic forms of commandssuch as LINEAR, ARC and CIRCLE are used herein instead of G01, G02, G03,and others. However, G-code is one means of programming systemsdescribed herein.

Extending the conventional machine control code format to include statevariables (or parameters) in addition to conventional motion commandsenables improved control of additive manufacturing machines, such aslaser metal deposition (LIVID) machines, so that multi-material andgradient-material structures may be created. The improved codingmethodology may be referred to as a Location and Material Process State(LAMPS) coding.

The following is an example of machine control codes using an exampleLAMPS format, which extends the number of variables included in eachcode:

-   -   LINEAR X0 Y0 Z0 F50 P1000 M100 N0    -   LINEAR X10 Y0 Z0 F50 P750 M50 N50    -   LINEAR X20 Y0 Z0 F50 P1000 M100 N0

The additional variables (or parameters) in this example of the LAMPScodes (as compared to the example above) are: (1) P: laser power of theLIVID machine in units, such as Watts; (2) M: first material mass ratein units, such as grams per minute; and (3) N: second material mass ratein units, such as grams per minute. Notably, the aforementionedadditional variables are exemplary, and many other state variables maybe used. For example, carrier gas flow, shield gas flow, active coolingon/off, powder hopper mixer on/off, and others. Further, the units arealso exemplary and other units may be substituted. For example, anychosen unit may be converted to percentages of maximum value or othervalues depending upon a machine operator's preference.

Thus, the LAMPS coding format enables an additive manufacturing machine,such as a LIVID machine, to combine traditional motion commands inmachine control code, such as “LINEAR X10 Y0 Z0 F50”, with additionalstate variables, such as laser power, first material mass rate, andsecond material mass rate, and so on. The use of such state variablealongside traditional motion commands enables an operator to varyadditional aspects of the additive manufacturing machine, such as thelaser power and material types being deposited, at any location within astructure in order to create multi-material and gradient materialstructures.

FIG. 2A depicts an example of a set of LAMPS codes 200. In this example,each individual LAMPS code in the set 200 is indexed by a unique indexnumber 202. Further, each individual LAMPS code includes motionparameters 204. For example, as described above, the motion parameters204 may include a type of motion (e.g., linear) as well as coordinateparameters for a given coordinate system, such as X, Y, and Zcoordinates in a Cartesian coordinate system. Further, motion parameters204 may include, for example, a scan rate of a laser metal depositionhead, or a movement command for a movable build platform, such as buildsurface motion system 124 in FIG. 1 .

LAMPS codes 200 further include state parameters 206. The stateparameters 206 may refer to, for example, specific states of the lasermetal deposition machine, such as laser power, material flow rates(e.g., mass flow rates of powders), gas flow rates (e.g., carrier gas,shield gas, cooling gas, etc.), discreet states such as active coolingon/off and powder hopper mixer on/off, and others.

Notably, the format of the LAMPS codes 200 in FIG. 2A are exemplaryonly. More or fewer individual parameters may be present in differentimplementations of the LAMPS format. Further, different orders of theparameters are possible without affecting the purpose of providing theadditional state parameters. Further yet, in some examples, each LAMPScode may include a different number of parameters as relevant to theparticular instruction. For example, an individual LAMPS code at aparticular index may only include state parameters when no movement isnecessary in a given step. Similarly, a subset of motion parameters maybe included depending on the type of motion being commanded by the LAMPScodes. The format of the LAMPS codes is flexible. In order to be able tointerpret LAMPS codes when there is not a fixed number of parameters,prefixes may be used (as in the example above) before individualparameters so that the additive manufacturing machine can interpret theparameters present in any given LAMPS code.

Example Method for Machine Code Manipulation to Address MaterialTransport Delay

The benefits of LAMPS coding for control of additive manufacturingmachines, such as LIVID machines, may be further extended by accountingfor material transport delays in the additive manufacturing machine. Forexample, the material delay from a material feeder to a depositionelement (such as deposition element 120 in FIG. 1 ). Because the timefor material flow at the deposition element to change and stabilize maybe predictable and repeatable, machine control codes (e.g., LAMPS) canbe adjusted to account for the material transition time. Accounting forthis transition time ensures that the proper material states are reachedbefore depositing material at the build site.

In some embodiments, a code manipulation module (e.g., a module ofcontrol system 104 in FIG. 1 ) computes the time required to completemotion commands as discussed above (e.g., in conventional or LAMPSmachine control codes) and monitors the changes in material parametersthat are defined in the machine control codes.

In some examples, the computation of the motion time is determined basedon several factors. For example, in the context of a LMD machine, thefactors may include: the distance travelled by a deposition head, thescan rate of the deposition head, and acceleration profile of thedeposition head. Further, where an additive manufacturing machineincludes a movable build platform (e.g., build surface motion system 124in FIG. 1 ), the motion of the build platform may be further factoredinto the motion time because the deposition head and build platform maybe moving simultaneously and thereby affect a relative motion rate.

The code manipulation module may compare a calculated motion time to thematerial transport time and add or modify lines of machine control codeso as to ensure the material mass rate is at the desired amount when thedeposition head reaches the designated location. For example, machinemotion delays may be added to the machine control code by the codemanipulation module if the material mass rate is determined to not beachievable within a given time period, or at the beginning of a machinecontrol code to allow material flow to initiate.

FIG. 3 depicts a method 300 for manipulating machine control codes toaccount for material transportation delays.

Method 300 begins at step 302 with analyzing machine control codes. Forexample, the machine control codes could be LAMPS codes as described anddepicted above with respect to FIG. 2A. The machine control codes may bereceived by control system 104 of FIG. 1 and a code manipulation moduleof control system 104 may analyze the machine control codes.

Method 300 then proceeds to step 304 with determining a materialtransition between a first machine control code and a second machinecontrol code. For example, a transition may be between one material anda second material, or between one ratio of two or more materials, toanother ratio of two or more materials. A material transition may bedefined in a LAMPS code, as discussed above with respect to FIG. 2A. Theinclusion of state parameters in the LAMPS codes significantly eases thedetermination of material transitions.

The material transition may be associated with a future processposition, which is any position that a processing portion of an additivemanufacturing machine, such as deposition element 120 of FIG. 1 , is notcurrently in. For example, when examining machine control code from astarting position (e.g., before any processing begins), the futureprocess positions are any positions to which the machine has to moveduring the processing according to the machine control codes. Whenexamining machine control codes during processing (e.g., looking aheadfrom the current code entry), future process positions may be anyposition in future machine control codes.

Method 300 then proceeds to step 306 with determining a materialtransition time. The material transition time is a measure of how longit will take the additive manufacturing machine to transition from afirst material composition to a second material composition, where eachcomposition may include one or more materials.

In some examples, the material transition times may be based on severalfactors, such as type of material, material flow rate, gas flow rates(e.g., carrier gas flow rates), type of deposition equipment (e.g., typeof nozzle), etc.

In some cases, the material transition times may be experimentallydetermined initially and then stored in a look-up table, or other datastorage element, and accessible to a control system, such as controlsystem 104 in FIG. 1 . For example, the look-up table may be stored inthe form of a database accessible to the control system, or the look-uptable may be stored in a local memory accessible to the control system.In some examples, the look-up table may be rules-based.

Method 300 then proceeds to step 308 with determining a motion time fromthe first machine control code to the second machine control code. Themotion time is a measure of the length of time it takes to move aprocessing portion of an additive manufacturing machine, such asdeposition element 120 of FIG. 1 , from one position, such as a currentposition, to another position, such as a future position, as defined inthe machine control codes. For example, the first position may be set bymotion parameters in a first LAMPS code and the second position may beset by motion parameters in a second LAMPS code (such as described withrespect to FIG. 2A, above).

In some cases, such as where the machine control code is at its start,the current process position may be an initialization or startingposition for the additive manufacturing machine. In other cases, such aswhere the additive manufacturing machine is actively processingmaterial, the current process position is the current position of, forexample, a deposition element.

The determination of the motion time may be based on many parameters,such as a maximum or set movement or scan rate of a deposition element(such as by process motion system 112 of FIG. 1 ), a maximum or setmovement rate of an underlying build platform (such as build surfacemotion system 124 of FIG. 1 ), the distance between the current processposition and the future process position, the accelerationcharacteristics of the deposition head and/or the build platform, etc.As above, there may be a difference between a maximum movement rate anda set movement rate, such as when a deposition head is moving withoutprocessing underlying material, and when it is moving while processingunderlying material.

Method 300 then proceeds to step 310 with comparing the materialtransition time to the motion transition time. If the materialtransition time is greater than the motion transition time, then method300 proceeds to step 312 where the code manipulation module of theadditive manufacturing machine control system manipulates the machinecontrol code to prevent the machine motion from overrunning the materialtransition. For example, the code manipulation module may add a machinecontrol code to the existing set of machine control codes to createadditional time for the material to transition.

Notably, while FIG. 3 is described with respect to a code manipulationmodule of a machine control system, such as control system 104 of FIG. 1, the method described herein can be implemented in other modules,including standalone modules or control systems of an additivemanufacturing machine.

An advantage of method 300 is that it does not require changing anyunderlying control logic of the additive manufacturing machine. In otherwords, because the codes are being manipulated, rather than the machinedirectly, method 300 should be widely applicable to existing machineswithout significant redesign of the underlying operation and controlsystems.

Referring back to FIG. 2B, an example of manipulating a set of machinecontrol codes 230 is depicted, which may be implemented in embodimentsof method 300, described above. In this example, assume that a materialtransition is determined between “Index 1” and “Index 2”, such asdescribed in FIG. 3 with respect to step 304. In order to account forthe material transition, the machine control codes 230 are manipulated(e.g., in step 312 of FIG. 3 ) by adding (i.e., interleaving) a newmachine control code at “Index 1.5” as indicated by box 238. Forexample, the new machine control code may be added by the codemanipulation module of the additive manufacturing machine controlsystem. The newly added machine control code may include all or a subsetof parameters of other machine control codes in the set of machinecontrol codes 230, such as motion parameters 234 and state parameters236. In this example, the newly added machine control code at “Index1.5” may cause the additive manufacturing machine to delay, move moreslowly, turn off the laser, change gas flow rates, or affect any othersort of motion or state parameter in order to ensure that the materialtransition time is met or exceeded before starting to process accordingto the machine control code at “Index 2”.

In the example depicted in FIG. 2B, the newly added machine control codeat “Index 1.5” is given an index number that is between the precedingand succeeding machine control codes, with indexes 1 and 2 respectively.In other examples, the code manipulation module may add a new machinecontrol code and simply renumber all of the indexes. Further, in otherexamples the newly added machine code may be before Index 1 (e.g., at“Index 0.5” instead).

FIG. 2C depicts another example of manipulating a set of machine codes260, which include indexes 262, motion parameters 264, and stateparameters 266, like in FIG. 2A. In this example, assume again that amaterial transition is determined between “Index 1” and “Index 2”, suchas described in FIG. 3 with respect to step 304. In FIG. 2C, specificparameters of an existing machine code (in this example, at “Index 1”)are manipulated (e.g., in step 312 of FIG. 3 ), as depicted by the boxat 268, instead of adding new machine control codes, such as describedwith respect to FIG. 2B. In other words, the code manipulation modulemay manipulate one or more previous machine control codes before amachine control code comprising a material transition (e.g., in stateparameters 266 of “Index 2”) in order to front-run the materialtransition. In other words, the concept depicted in FIG. 2C leveragesthe material transition time by modifying pre-existing machine controlto start the transition early (e.g., at “Index 1”) in order that thetransition will have occurred by the time the new material compositionis needed (e.g., at “Index 2”). In this example, the earlier machinecontrol codes are modified so that the change in material compositionarrives “just in time” for the machine control code commanding thechange (e.g., here at “Index 2”).

The different forms of manipulation depicted and described in FIGS. 2Band 2C may be combined. For example, a new machine control code may beadded prior to an existing machine control code where a materialtransition is identified, as described with respect to 2B. And existingmachine control codes may be further modified, as described with respectto 2C. In many cases, the relative amount of time necessary to make thematerial transition may dictate the preferred solution between theconcepts described in FIGS. 2B and 2C, or some combination thereof.

In some examples, the code manipulation module may perform an analysison the received machine control codes before ever beginning processing,and make changes to the machine control code based on the analysis ofmotion times and material transition times. In other examples, the codemanipulation module may perform the analysis “on the fly” as theadditive manufacturing machine is processing and may make dynamicadjustments to the machine control codes. For example, the codemanipulation module may include a standard “look ahead” of some fixednumber of machine control codes to determine whether any manipulation ofthe existing machine control codes is necessary.

FIG. 4 depicts an example of a part 400 that includes multiple materialstructures 402, 404, and 406. In this example, structure 402 in thisexample is a composition of 50% of a first material and 50% of a secondmaterial. Structure 404 is a composition of 25% of the first materialand 75% of the second material. Structure 406 is a composition of 75% ofthe first material and 25% of the second material. The remainingportions of layers 408 are 100% of the first material.

Part 400 may be additively manufactured by an additive manufacturingsystem 100, such as described with respect to FIG. 1 , according to amethod, such as described with respect to FIG. 3 . In a first example, aset of time-independent LAMPS codes corresponds to the layer 410depicted in FIG. 4 , and are as follows:

-   -   1. M100 N0 // Begins material 1 mass rate at 100%    -   2. DELAY 1 // Delay 1 second to allow material 1 mass rate to be        achieved at deposition head    -   3. LASER ON // Turns on processing laser    -   4. LINEAR X100 Y0 Z0 F5 P1000 M100 N0 // Move 100 mm in the X        direction at 5 mm/sec, 1000 W laser power, 100% material 1 mass        rate, 0% material 2 mass rate, where time to complete the motion        is 20 seconds    -   5. LINEAR X100 Y0 Z0 F5 P1000 M75 N25 // Move 100 mm in the X        direction at 5 mm/sec, 1000 W laser power, 75% material 1 mass        rate, 25% material 2 mass rate, where time to complete the        motion is 20 seconds    -   6. LINEAR X120 Y0 Z0 F5 P1000 M100 N0 // Move 100 mm in the X        direction at 5 mm/sec, 1000 W laser power, 100% material 1 mass        rate, 0% material 2 mass rate, where time to complete the motion        is 20 seconds    -   7. LASER OFF // Turns off processing laser

In the preceding machine code example, there is no code manipulation,and so the gradient structure 406 will not have the desired compositionat the desired location due to the time it takes for the materialcomposition to change between, for example, step 4 (M100) and step 5(M75 N25). This is because of the inherent delay in getting the materialfrom a material feeder (e.g., material feed 108 of FIG. 1 ) to aprocessing component of the additive manufacturing machine (e.g.,deposition element 120 of FIG. 1 ). The machine control codes will takeapproximately 61 seconds to complete, not accounting for acceleration ofthe machine motion system.

In a second example, a set of LAMPS codes corresponding to the layer 410are modified (e.g., by a code manipulation module) to include aplurality of delays, as follows:

-   -   1. M100 N0 // Begins material 1 mass rate at 100%    -   2. DELAY 1 // Delay 1 second to allow material 1 mass rate to be        achieved at deposition head    -   3. LASER ON // Turns on processing laser    -   4. LINEAR X100 Y0 Z0 F5 P1000 M100 N0 // Move 100 mm in the X        direction at 5 mm/sec, 1000 W laser power, 100% material 1 mass        rate, 0% material 2 mass rate, where time to complete the motion        is 20 seconds    -   5. LASER OFF // Turns off processing laser    -   6. M75 N25 // Changes material 1 mass rate to 75%, material 2        mass rate to 25%    -   7. DELAY 1 // Delay 1 second to allow material 1 and 2 mass        rates to be achieved at deposition head    -   8. LASER ON // Turns on processing laser    -   9. LINEAR X100 Y0 Z0 F5 P1000 M75 N25 // Move 100 mm in the X        direction at 5 mm/sec, 1000 W laser power, 75% material 1 mass        rate, 25% material 2 mass rate, where time to complete the        motion is 20 seconds    -   10. LASER OFF // Turns off processing laser    -   11. M100 N0 // Changes material 1 mass rate to 100%, material 2        mass rate to 0%    -   12. DELAY 1 // Delay 1 second to allow material 1 and 2 mass        rates to be achieved at deposition head    -   13. LASER ON // Turns on processing laser    -   14. LINEAR X120 Y0 Z0 F5 P1000 M100 N0 // Move 100 mm in the X        direction at 5 mm/sec, 1000 W laser power, 100% material 1 mass        rate, 0% material 2 mass rate, where time to complete the motion        is 20 seconds

In the second example, steps 5-8 and 10-13 are added as compared to thefirst example. The steps may be added by a code manipulation module, asdescribed above with respect to FIG. 3 . In this second example, the 1second delays mean that the code will take longer to complete than inthe first example, above, but in this second example the desiredcomposition at the desired location will be achieved because the addeddelays (e.g., at Step 7) allow for the new material composition to makeit from a material feeder (e.g., material feed 108 of FIG. 1 ) to aprocessing component of the additive manufacturing machine (e.g.,deposition element 120 of FIG. 1 ). The code for the second example willtake 63 seconds to complete, not accounting for acceleration of themachine motion system.

In a third example, another set of LAMPS codes corresponding to thelayer 410 are modified (e.g., by a code manipulation module) to includea plurality of material transition steps, such as steps 5 and 7:

-   -   1. M100 N0 // Begins material 1 mass rate at 100%    -   2. DELAY 1 // Delay 1 second to allow material 1 mass rate to be        achieved at deposition head    -   3. LASER ON // Turns on processing laser    -   4. LINEAR X95 Y0 Z0 F5 P1000 M100 N0 // Move 95 mm in the X        direction at 5 mm/sec, 1000 W laser power, 100% material 1 mass        rate, 0% material 2 mass rate, where time to complete the motion        is 19 seconds    -   5. LINEAR X5 Y0 Z0 F5 P1000 M75 N25 // Move 5 mm in the X        direction at 5 mm/sec, 1000 W laser power, 75% material 1 mass        rate, 25% material 2 mass rate, where time to complete the        motion is 1 second    -   6. LINEAR X95 Y0 Z0 F5 P1000 M75 N25 // Move 95 mm in the X        direction at 5 mm/sec, 1000 W laser power, 75% material 1 mass        rate, 25% material 2 mass rate, where time to complete the        motion is 19 seconds    -   7. LINEAR X5 Y0 Z0 F5 P1000 M100 N0 // Move 5 mm in the X        direction at 5 mm/sec, 1000 W laser power, 100% material 1 mass        rate, 0% material 2 mass rate, where time to complete the motion        is 1 second    -   8. LINEAR X120 Y0 Z0 F5 P1000 M100 N0 // Move 100 mm in the X        direction at 5 mm/sec, 1000 W laser power, 100% material 1 mass        rate, 0% material 2 mass rate, where time to complete the motion        is 20 seconds    -   9. LASER OFF // Turns off processing laser

In the third example, steps 5 and 7 are added as compared to the firstexample. The steps may be added by a code manipulation module, asdescribed above with respect to FIG. 3 . In the third example, thetransition between one material composition (e.g., M100 at Step 4) andanother material composition (e.g. M75/N25 at Step 6) is initiated in anintermediate material transition step (e.g., Step 5), which allows forthe material composition to change while the deposition element is stillmoving. In this way, the target material composition is reached by thetime the deposition head reaches the corresponding point in the model.While it is possible that the intermediate material transition steps(e.g., Step 5 and Step 7) may create small zones of transitionalcomposition (e.g., between M100 and M75/N25), the benefit of thisparticular example is not having to turn the laser on and offrepeatedly, which may negatively affect processing time as well asprocess quality. Further, the machine control codes in the third examplewill take 61 seconds to complete, just like the first example, but withthe added benefit of having correct material compositions withinstructure 406.

Example Method for Addressing Material Transport Delay Using Closed-LoopProcess Control of an Additive Manufacturing Machine

FIG. 5 depicts a method 500 for addressing material transport delayusing closed-loop process control of an additive manufacturing process.

Method 500 begins at step 502 with determining a material transitionbetween a first machine control code and a second machine control code,in the same way as described above in FIG. 3 with respect to step 304.

Method 500 then proceeds to step 504 where the first machine controlcode is completed.

Method 500 then proceeds to step 506 with initiating a dynamic delay ofprocessing while the material transitions from a first compositionassociated with the first machine control code to a second compositionassociated with the second machine control code. In this case, thedynamic delay does not require any changes to the initial machinecontrol code. Rather, a delay is initiated between one machine controlcode and another automatically based on sensor feedback (e.g., from oneor more material flow sensors).

Method 500 then proceeds to step 508 with determining that a materialtransition is complete. In this case, unlike method 300 described withrespect to FIG. 3 , the material composition is actively sensed at somepoint between a material feed and the processing component, such asdeposition element 120 of FIG. 1 . In some examples, the materialcomposition is monitored at the processing component to give the mostaccurate condition of the material about to be processed. For example,sensors may be built into feed lines leading to a processing component,or even built within the processing component, such as within a LIVIDdeposition head, to actively measure the material composition.

Once the material transition is determined to be complete at step 508,process 500 proceeds to step 510 with processing according the secondmachine control code.

An advantage of method 500 is minimizing any programmatic delay (e.g.,delay added into machine control codes) that may overshoot the actualtime necessary for the material to transition to a steady, desiredstate. As above, the delays may be based on experimental or predictedmaterial transition times, which may not be accurate in allcircumstances. Because many variables can affect the transition timebetween material compositions, active monitoring can provide a moredirect and less inferential method for determining correct compositions.

The preceding description is provided to enable any person skilled inthe art to practice the various embodiments described herein. Theexamples discussed herein are not limiting of the scope, applicability,or embodiments set forth in the claims. Various modifications to theseembodiments will be readily apparent to those skilled in the art, andthe generic principles defined herein may be applied to otherembodiments. For example, changes may be made in the function andarrangement of elements discussed without departing from the scope ofthe disclosure. Various examples may omit, substitute, or add variousprocedures or components as appropriate. For instance, the methodsdescribed may be performed in an order different from that described,and various steps may be added, omitted, or combined. Also, featuresdescribed with respect to some examples may be combined in some otherexamples. For example, an apparatus may be implemented or a method maybe practiced using any number of the aspects set forth herein. Inaddition, the scope of the disclosure is intended to cover such anapparatus or method that is practiced using other structure,functionality, or structure and functionality in addition to, or otherthan, the various aspects of the disclosure set forth herein. It shouldbe understood that any aspect of the disclosure disclosed herein may beembodied by one or more elements of a claim.

As used herein, the word “exemplary” means “serving as an example,instance, or illustration.” Any aspect described herein as “exemplary”is not necessarily to be construed as preferred or advantageous overother aspects.

As used herein, a phrase referring to “at least one of” a list of itemsrefers to any combination of those items, including single members. Asan example, “at least one of: a, b, or c” is intended to cover a, b, c,a-b, a-c, b-c, and a-b-c, as well as any combination with multiples ofthe same element (e.g., a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b,b-b-b, b-b-c, c-c, and c-c-c or any other ordering of a, b, and c).

The following claims are not intended to be limited to the embodimentsshown herein, but are to be accorded the full scope consistent with thelanguage of the claims. Within a claim, reference to an element in thesingular is not intended to mean “one and only one” unless specificallyso stated, but rather “one or more.” Unless specifically statedotherwise, the term “some” refers to one or more. No claim element is tobe construed under the provisions of 35 U.S.C. § 112(f) unless theelement is expressly recited using the phrase “means for” or, in thecase of a method claim, the element is recited using the phrase “stepfor.” All structural and functional equivalents to the elements of thevarious aspects described throughout this disclosure that are known orlater come to be known to those of ordinary skill in the art areexpressly incorporated herein by reference and are intended to beencompassed by the claims. Moreover, nothing disclosed herein isintended to be dedicated to the public regardless of whether suchdisclosure is explicitly recited in the claims.

What is claimed is:
 1. A method of controlling an additive manufacturingsystem, comprising: determining a material transition between a firstmachine control code and a second machine control code in a set ofmachine control codes; performing processing by the additivemanufacturing system according to first machine control code; initiatinga dynamic delay of processing; receiving sensor feedback regarding afirst material flow and a second material flow; determining that thematerial transition is complete based on the sensor feedback;terminating the dynamic delay of processing; and performing processingby the additive manufacturing system according to t second machinecontrol code.
 2. The method of claim 1, wherein the sensor feedbackcomprises: sensor readings from a first material flow sensor monitoringa flow of a first material; and sensor readings from a second materialflow sensor monitoring a flow of a second material.
 3. The method ofclaim 2, wherein: the first material flow sensor is located in a firstmaterial feed line proximate to a deposition element of the additivemanufacturing system, and the second material flow sensor is located ina second material feed line proximate to the deposition element of theadditive manufacturing system.
 4. The method of claim 3, wherein: thefirst material feed line is connected to a first material feed reservoircomprising the first material, and the second material feed line isconnected to a second material feed reservoir comprising the secondmaterial.
 5. The method of claim 2, wherein: the first material flowsensor is located in a deposition element of the additive manufacturingsystem, and the second material flow sensor is located in the depositionelement of the additive manufacturing system.
 6. The method of claim 2,further comprising: determining a transport delay of the first materialbased on the sensor readings from the first material flow sensor andsensor readings from the second material flow sensor.
 7. The method ofclaim 1, wherein the first machine control code and the second machinecontrol code each comprise at least one motion parameter and at leastone state parameter.
 8. The method of claim 7, wherein the additivemanufacturing system is a laser metal deposition system.
 9. The methodof claim 1, wherein the first machine control code includes at least afirst state parameter associated with a first material and a secondstate parameter associated with a second material.
 10. The method ofclaim 9, wherein: the second machine control code includes at least athird state parameter associated with the first material and a fourthstate parameter associated with the second material, the third stateparameter is different than the first state parameter associated withthe first machine control code, and the fourth state parameter isdifferent than the second state parameter associated with the firstmachine control code.